package top.z.work.module.system.service;

import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import top.z.work.module.system.controller.role.vo.SystemRoleRelateRouteCreateVO;
import top.z.work.module.system.controller.role.vo.SystemRoleRelateRouteVO;
import top.z.work.module.system.controller.role.vo.SystemRoleRelateUserCreateVO;
import top.z.work.module.system.entity.SystemRole;
import top.z.work.module.system.entity.SystemUser;

import java.util.List;

/**
 * 系统角色Service
 *
 * @author zaoangod
 * @since 2024-03-22
 */
public interface SystemRoleService extends IService<SystemRole> {

    /**
     * 移除角色
     *
     * @param identity 角色ID
     */
    void removeRole(Long identity);

    /**
     * 修改角色
     *
     * @param parameter 角色ID
     */
    SystemRole modifyRole(SystemRole parameter);

    /**
     * 获取角色关联的菜单
     *
     * @param identity 角色ID
     * @return 菜单列表
     */
    List<SystemRoleRelateRouteVO> getRoleRelateRoute(Long identity);

    /**
     * 添加角色关联的菜单
     *
     * @param parameter 参数
     */
    void addRoleRelateRoute(SystemRoleRelateRouteCreateVO parameter);

    /**
     * 获取角色关联的用户
     *
     * @param identity 角色ID
     * @param page     页码
     * @param size     页大小
     * @return 菜单列表
     */
    Page<SystemUser> getRoleRelateUser(Long identity, Integer page, Integer size);

    /**
     * 添加角色到用户
     *
     * @param parameter 参数
     */
    void addRoleRelateUser(SystemRoleRelateUserCreateVO parameter);

    /**
     * 删除角色关联的用户
     *
     * @param parameter 参数
     */
    void removeRoleRelateUser(SystemRoleRelateUserCreateVO parameter);

}
